Generated by Cython 3.0.2
Yellow lines hint at Python interaction.
Click on a line that starts with a "+" to see the C code that Cython generated for it.
Raw output: _le_mandelbrot_benchmark.c
+001: # cython: infer_types=True, wraparound=False, nonecheck=False, boundscheck=False, cdivision=True, language_level=3, profile=False, autogen_pxd=False
__pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_7) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
002:
+003: import numpy as np
__pyx_t_7 = __Pyx_ImportDottedModule(__pyx_n_s_numpy, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_7) < 0) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
004:
005: cimport numpy as np
006:
007: from cython.parallel import prange
008:
+009: from .__liquid_engine__ import LiquidEngine
__pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_n_s_LiquidEngine); __Pyx_GIVEREF(__pyx_n_s_LiquidEngine); if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 0, __pyx_n_s_LiquidEngine)) __PYX_ERR(0, 9, __pyx_L1_error); __pyx_t_4 = __Pyx_Import(__pyx_n_s_liquid_engine, __pyx_t_7, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_LiquidEngine); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_LiquidEngine, __pyx_t_7) < 0) __PYX_ERR(0, 9, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+010: from .__opencl__ import cl, cl_array
__pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_n_s_cl); __Pyx_GIVEREF(__pyx_n_s_cl); if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_n_s_cl)) __PYX_ERR(0, 10, __pyx_L1_error); __Pyx_INCREF(__pyx_n_s_cl_array); __Pyx_GIVEREF(__pyx_n_s_cl_array); if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 1, __pyx_n_s_cl_array)) __PYX_ERR(0, 10, __pyx_L1_error); __pyx_t_7 = __Pyx_Import(__pyx_n_s_opencl_2, __pyx_t_4, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_7, __pyx_n_s_cl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_cl, __pyx_t_4) < 0) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_7, __pyx_n_s_cl_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_cl_array, __pyx_t_4) < 0) __PYX_ERR(0, 10, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+011: from ._le_mandelbrot_benchmark_ import mandelbrot as _py_mandelbrot
__pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_n_s_mandelbrot); __Pyx_GIVEREF(__pyx_n_s_mandelbrot); if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 0, __pyx_n_s_mandelbrot)) __PYX_ERR(0, 11, __pyx_L1_error); __pyx_t_4 = __Pyx_Import(__pyx_n_s_le_mandelbrot_benchmark, __pyx_t_7, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_mandelbrot); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_py_mandelbrot, __pyx_t_7) < 0) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+012: from ._le_mandelbrot_benchmark_ import njit_mandelbrot as _njit_mandelbrot
__pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_n_s_njit_mandelbrot_2); __Pyx_GIVEREF(__pyx_n_s_njit_mandelbrot_2); if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_n_s_njit_mandelbrot_2)) __PYX_ERR(0, 12, __pyx_L1_error); __pyx_t_7 = __Pyx_Import(__pyx_n_s_le_mandelbrot_benchmark, __pyx_t_4, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_7, __pyx_n_s_njit_mandelbrot_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_njit_mandelbrot, __pyx_t_4) < 0) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
013:
014:
015: cdef extern from "_c_mandelbrot_benchmark.h":
016: int _c_mandelbrot(float row, float col) nogil
017:
+018: class MandelbrotBenchmark(LiquidEngine):
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_LiquidEngine); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_7); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(0, 18, __pyx_L1_error); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PEP560_update_bases(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = __Pyx_CalculateMetaclass(NULL, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = __Pyx_Py3MetaclassPrepare(__pyx_t_5, __pyx_t_7, __pyx_n_s_MandelbrotBenchmark, __pyx_n_s_MandelbrotBenchmark, (PyObject *) NULL, __pyx_n_s_nanopyx_liquid__le_mandelbrot_be, __pyx_kp_s_Mandelbrot_Benchmark_using_the); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_7 != __pyx_t_4) { if (unlikely((PyDict_SetItemString(__pyx_t_9, "__orig_bases__", __pyx_t_4) < 0))) __PYX_ERR(0, 18, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); /* … */ __pyx_t_14 = __Pyx_Py3ClassCreate(__pyx_t_5, __pyx_n_s_MandelbrotBenchmark, __pyx_t_7, __pyx_t_9, NULL, 0, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); if (__Pyx_CyFunction_InitClassCell(__pyx_t_4, __pyx_t_14) < 0) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_MandelbrotBenchmark, __pyx_t_14) < 0) __PYX_ERR(0, 18, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
019: """
020: Mandelbrot Benchmark using the NanoPyx Liquid Engine
021: """
022:
+023: def __init__(self, clear_benchmarks=False, testing=False):
/* Python wrapper */
static PyObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_1__init__(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_1__init__ = {"__init__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_1__init__(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_clear_benchmarks = 0;
PyObject *__pyx_v_testing = 0;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 23, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_clear_benchmarks,&__pyx_n_s_testing,0};
PyObject* values[3] = {0,0,0};
values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject *)Py_False)));
values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject *)Py_False)));
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 23, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_clear_benchmarks);
if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 23, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_testing);
if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 23, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(0, 23, __pyx_L3_error)
}
} else {
switch (__pyx_nargs) {
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_self = values[0];
__pyx_v_clear_benchmarks = values[1];
__pyx_v_testing = values[2];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, __pyx_nargs); __PYX_ERR(0, 23, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark___init__(__pyx_self, __pyx_v_self, __pyx_v_clear_benchmarks, __pyx_v_testing);
/* function exit code */
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_clear_benchmarks, PyObject *__pyx_v_testing) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__22 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_clear_benchmarks, __pyx_n_s_testing); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 23, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__22);
__Pyx_GIVEREF(__pyx_tuple__22);
__pyx_codeobj__23 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__22, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_mandelbro, __pyx_n_s_init, 23, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__23)) __PYX_ERR(0, 23, __pyx_L1_error)
/* … */
__pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_1__init__, 0, __pyx_n_s_MandelbrotBenchmark___init, NULL, __pyx_n_s_nanopyx_liquid__le_mandelbrot_be, __pyx_d, ((PyObject *)__pyx_codeobj__23)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 23, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_INCREF(__pyx_t_10);
PyList_Append(__pyx_t_4, __pyx_t_10);
__Pyx_GIVEREF(__pyx_t_10);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_10, __pyx_tuple__24);
if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_init, __pyx_t_10) < 0) __PYX_ERR(0, 23, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_tuple__24 = PyTuple_Pack(2, ((PyObject *)Py_False), ((PyObject *)Py_False)); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 23, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__24);
__Pyx_GIVEREF(__pyx_tuple__24);
+024: self._designation = "Mandelbrot_Benchmark"
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_designation, __pyx_n_u_Mandelbrot_Benchmark) < 0) __PYX_ERR(0, 24, __pyx_L1_error)
+025: super().__init__(clear_benchmarks=clear_benchmarks, testing=testing,
__pyx_t_1 = __Pyx_CyFunction_GetClassObj(__pyx_self); if (!__pyx_t_1) { PyErr_SetString(PyExc_SystemError, "super(): empty __class__ cell"); __PYX_ERR(0, 25, __pyx_L1_error) } __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 25, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(0, 25, __pyx_L1_error); __Pyx_INCREF(__pyx_v_self); __Pyx_GIVEREF(__pyx_v_self); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self)) __PYX_ERR(0, 25, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 25, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 25, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 25, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_clear_benchmarks, __pyx_v_clear_benchmarks) < 0) __PYX_ERR(0, 25, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_testing, __pyx_v_testing) < 0) __PYX_ERR(0, 25, __pyx_L1_error) /* … */ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 25, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+026: opencl_=True, unthreaded_=True, threaded_=True, threaded_static_=True,
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_opencl, Py_True) < 0) __PYX_ERR(0, 25, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_unthreaded, Py_True) < 0) __PYX_ERR(0, 25, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_threaded, Py_True) < 0) __PYX_ERR(0, 25, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_threaded_static, Py_True) < 0) __PYX_ERR(0, 25, __pyx_L1_error)
+027: threaded_dynamic_=True, threaded_guided_=True, python_=True, njit_=True)
if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_threaded_dynamic, Py_True) < 0) __PYX_ERR(0, 25, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_threaded_guided, Py_True) < 0) __PYX_ERR(0, 25, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_python, Py_True) < 0) __PYX_ERR(0, 25, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_njit, Py_True) < 0) __PYX_ERR(0, 25, __pyx_L1_error)
028:
+029: self._default_benchmarks = {'Numba': {"(['number(10)', 'number(-1.5)', 'number(0.5)', 'number(-1.0)', 'number(1.0)'], {})": [7.5, 0.3969438750000336, 0.0001701670000784361, 0.00015795900003467978], "(['number(20)', 'number(-1.5)', 'number(0.5)', 'number(-1.0)', 'number(1.0)'], {})": [15.0, 0.00023199999986900366, 0.00027608300001702446, 0.00027991599995402794]}, 'OpenCL': {"(['number(10)', 'number(-1.5)', 'number(0.5)', 'number(-1.0)', 'number(1.0)'], {})": [7.5, 0.008683583999982147, 0.005001416000141035, 0.004709541000011086], "(['number(20)', 'number(-1.5)', 'number(0.5)', 'number(-1.0)', 'number(1.0)'], {})": [15.0, 0.005239165999910256, 0.004791457999999693, 0.004966167000020505]}, 'Python': {"(['number(10)', 'number(-1.5)', 'number(0.5)', 'number(-1.0)', 'number(1.0)'], {})": [7.5, 0.00973437500010732, 0.007952500000101281, 0.007477000000108092], "(['number(20)', 'number(-1.5)', 'number(0.5)', 'number(-1.0)', 'number(1.0)'], {})": [15.0, 0.027458667000018977, 0.028410624999878564, 0.026648084000044037]}, 'Threaded': {"(['number(10)', 'number(-1.5)', 'number(0.5)', 'number(-1.0)', 'number(1.0)'], {})": [7.5, 0.0003130830000372953, 0.00022504100002151972, 0.00016691600012563867], "(['number(20)', 'number(-1.5)', 'number(0.5)', 'number(-1.0)', 'number(1.0)'], {})": [15.0, 0.0002568749998772546, 0.0002542080001148861, 0.00026070800004163175]}, 'Threaded_dynamic': {"(['number(10)', 'number(-1.5)', 'number(0.5)', 'number(-1.0)', 'number(1.0)'], {})": [7.5, 0.000146165999922232, 0.00015641699997104297, 0.0001227500001732551], "(['number(20)', 'number(-1.5)', 'number(0.5)', 'number(-1.0)', 'number(1.0)'], {})": [15.0, 0.00018033399987871235, 0.0002684999999473803, 0.00018504099989513634]}, 'Threaded_guided': {"(['number(10)', 'number(-1.5)', 'number(0.5)', 'number(-1.0)', 'number(1.0)'], {})": [7.5, 0.00017041599994627177, 0.0001660830000673741, 0.00014637499998571002], "(['number(20)', 'number(-1.5)', 'number(0.5)', 'number(-1.0)', 'number(1.0)'], {})": [15.0, 0.0002119999999194988, 0.00020254200012459478, 0.00020637500006159826]}, 'Threaded_static': {"(['number(10)', 'number(-1.5)', 'number(0.5)', 'number(-1.0)', 'number(1.0)'], {})": [7.5, 0.0002240000001165754, 0.00018258299996887217, 0.00018458400018062093], "(['number(20)', 'number(-1.5)', 'number(0.5)', 'number(-1.0)', 'number(1.0)'], {})": [15.0, 0.00026874999980464054, 0.0002514999998766143, 0.00028095900006519514]}, 'Unthreaded': {"(['number(10)', 'number(-1.5)', 'number(0.5)', 'number(-1.0)', 'number(1.0)'], {})": [7.5, 0.0001960000001872686, 0.00012925000010000076, 0.00012629100001504412], "(['number(20)', 'number(-1.5)', 'number(0.5)', 'number(-1.0)', 'number(1.0)'], {})": [15.0, 0.00044287500008977077, 0.0004312920000302256, 0.00043895799990423257]}}
__pyx_t_3 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_7_5); __Pyx_GIVEREF(__pyx_float_7_5); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_7_5)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_3969438750000336); __Pyx_GIVEREF(__pyx_float_0_3969438750000336); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_3969438750000336)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_0001701670000784361); __Pyx_GIVEREF(__pyx_float_0_0001701670000784361); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_0001701670000784361)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00015795900003467978); __Pyx_GIVEREF(__pyx_float_0_00015795900003467978); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_00015795900003467978)) __PYX_ERR(0, 29, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_number_10_number_1_5_number_0_5, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_15_0); __Pyx_GIVEREF(__pyx_float_15_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_15_0)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00023199999986900366); __Pyx_GIVEREF(__pyx_float_0_00023199999986900366); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_00023199999986900366)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00027608300001702446); __Pyx_GIVEREF(__pyx_float_0_00027608300001702446); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_00027608300001702446)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00027991599995402794); __Pyx_GIVEREF(__pyx_float_0_00027991599995402794); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_00027991599995402794)) __PYX_ERR(0, 29, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_number_20_number_1_5_number_0_5, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Numba, __pyx_t_1) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_7_5); __Pyx_GIVEREF(__pyx_float_7_5); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_7_5)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_008683583999982147); __Pyx_GIVEREF(__pyx_float_0_008683583999982147); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_008683583999982147)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_005001416000141035); __Pyx_GIVEREF(__pyx_float_0_005001416000141035); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_005001416000141035)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_004709541000011086); __Pyx_GIVEREF(__pyx_float_0_004709541000011086); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_004709541000011086)) __PYX_ERR(0, 29, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_number_10_number_1_5_number_0_5, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_15_0); __Pyx_GIVEREF(__pyx_float_15_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_15_0)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_005239165999910256); __Pyx_GIVEREF(__pyx_float_0_005239165999910256); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_005239165999910256)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_004791457999999693); __Pyx_GIVEREF(__pyx_float_0_004791457999999693); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_004791457999999693)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_004966167000020505); __Pyx_GIVEREF(__pyx_float_0_004966167000020505); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_004966167000020505)) __PYX_ERR(0, 29, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_number_20_number_1_5_number_0_5, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_OpenCL, __pyx_t_1) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_7_5); __Pyx_GIVEREF(__pyx_float_7_5); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_7_5)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00973437500010732); __Pyx_GIVEREF(__pyx_float_0_00973437500010732); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_00973437500010732)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_007952500000101281); __Pyx_GIVEREF(__pyx_float_0_007952500000101281); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_007952500000101281)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_007477000000108092); __Pyx_GIVEREF(__pyx_float_0_007477000000108092); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_007477000000108092)) __PYX_ERR(0, 29, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_number_10_number_1_5_number_0_5, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_15_0); __Pyx_GIVEREF(__pyx_float_15_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_15_0)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_027458667000018977); __Pyx_GIVEREF(__pyx_float_0_027458667000018977); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_027458667000018977)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_028410624999878564); __Pyx_GIVEREF(__pyx_float_0_028410624999878564); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_028410624999878564)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_026648084000044037); __Pyx_GIVEREF(__pyx_float_0_026648084000044037); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_026648084000044037)) __PYX_ERR(0, 29, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_number_20_number_1_5_number_0_5, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Python, __pyx_t_1) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_7_5); __Pyx_GIVEREF(__pyx_float_7_5); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_7_5)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_0003130830000372953); __Pyx_GIVEREF(__pyx_float_0_0003130830000372953); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_0003130830000372953)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00022504100002151972); __Pyx_GIVEREF(__pyx_float_0_00022504100002151972); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_00022504100002151972)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00016691600012563867); __Pyx_GIVEREF(__pyx_float_0_00016691600012563867); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_00016691600012563867)) __PYX_ERR(0, 29, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_number_10_number_1_5_number_0_5, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_15_0); __Pyx_GIVEREF(__pyx_float_15_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_15_0)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_0002568749998772546); __Pyx_GIVEREF(__pyx_float_0_0002568749998772546); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_0002568749998772546)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_0002542080001148861); __Pyx_GIVEREF(__pyx_float_0_0002542080001148861); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_0002542080001148861)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00026070800004163175); __Pyx_GIVEREF(__pyx_float_0_00026070800004163175); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_00026070800004163175)) __PYX_ERR(0, 29, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_number_20_number_1_5_number_0_5, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Threaded, __pyx_t_1) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_7_5); __Pyx_GIVEREF(__pyx_float_7_5); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_7_5)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_000146165999922232); __Pyx_GIVEREF(__pyx_float_0_000146165999922232); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_000146165999922232)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00015641699997104297); __Pyx_GIVEREF(__pyx_float_0_00015641699997104297); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_00015641699997104297)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_0001227500001732551); __Pyx_GIVEREF(__pyx_float_0_0001227500001732551); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_0001227500001732551)) __PYX_ERR(0, 29, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_number_10_number_1_5_number_0_5, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_15_0); __Pyx_GIVEREF(__pyx_float_15_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_15_0)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00018033399987871235); __Pyx_GIVEREF(__pyx_float_0_00018033399987871235); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_00018033399987871235)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_0002684999999473803); __Pyx_GIVEREF(__pyx_float_0_0002684999999473803); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_0002684999999473803)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00018504099989513634); __Pyx_GIVEREF(__pyx_float_0_00018504099989513634); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_00018504099989513634)) __PYX_ERR(0, 29, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_number_20_number_1_5_number_0_5, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Threaded_dynamic, __pyx_t_1) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_7_5); __Pyx_GIVEREF(__pyx_float_7_5); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_7_5)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00017041599994627177); __Pyx_GIVEREF(__pyx_float_0_00017041599994627177); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_00017041599994627177)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_0001660830000673741); __Pyx_GIVEREF(__pyx_float_0_0001660830000673741); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_0001660830000673741)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00014637499998571002); __Pyx_GIVEREF(__pyx_float_0_00014637499998571002); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_00014637499998571002)) __PYX_ERR(0, 29, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_number_10_number_1_5_number_0_5, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_15_0); __Pyx_GIVEREF(__pyx_float_15_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_15_0)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_0002119999999194988); __Pyx_GIVEREF(__pyx_float_0_0002119999999194988); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_0002119999999194988)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00020254200012459478); __Pyx_GIVEREF(__pyx_float_0_00020254200012459478); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_00020254200012459478)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00020637500006159826); __Pyx_GIVEREF(__pyx_float_0_00020637500006159826); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_00020637500006159826)) __PYX_ERR(0, 29, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_number_20_number_1_5_number_0_5, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Threaded_guided, __pyx_t_1) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_7_5); __Pyx_GIVEREF(__pyx_float_7_5); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_7_5)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_0002240000001165754); __Pyx_GIVEREF(__pyx_float_0_0002240000001165754); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_0002240000001165754)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00018258299996887217); __Pyx_GIVEREF(__pyx_float_0_00018258299996887217); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_00018258299996887217)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00018458400018062093); __Pyx_GIVEREF(__pyx_float_0_00018458400018062093); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_00018458400018062093)) __PYX_ERR(0, 29, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_number_10_number_1_5_number_0_5, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_15_0); __Pyx_GIVEREF(__pyx_float_15_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_15_0)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00026874999980464054); __Pyx_GIVEREF(__pyx_float_0_00026874999980464054); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_00026874999980464054)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_0002514999998766143); __Pyx_GIVEREF(__pyx_float_0_0002514999998766143); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_0002514999998766143)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00028095900006519514); __Pyx_GIVEREF(__pyx_float_0_00028095900006519514); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_00028095900006519514)) __PYX_ERR(0, 29, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_number_20_number_1_5_number_0_5, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Threaded_static, __pyx_t_1) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_7_5); __Pyx_GIVEREF(__pyx_float_7_5); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_7_5)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_0001960000001872686); __Pyx_GIVEREF(__pyx_float_0_0001960000001872686); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_0001960000001872686)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00012925000010000076); __Pyx_GIVEREF(__pyx_float_0_00012925000010000076); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_00012925000010000076)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00012629100001504412); __Pyx_GIVEREF(__pyx_float_0_00012629100001504412); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_00012629100001504412)) __PYX_ERR(0, 29, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_number_10_number_1_5_number_0_5, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_float_15_0); __Pyx_GIVEREF(__pyx_float_15_0); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_float_15_0)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00044287500008977077); __Pyx_GIVEREF(__pyx_float_0_00044287500008977077); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_float_0_00044287500008977077)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_0004312920000302256); __Pyx_GIVEREF(__pyx_float_0_0004312920000302256); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_float_0_0004312920000302256)) __PYX_ERR(0, 29, __pyx_L1_error); __Pyx_INCREF(__pyx_float_0_00043895799990423257); __Pyx_GIVEREF(__pyx_float_0_00043895799990423257); if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_float_0_00043895799990423257)) __PYX_ERR(0, 29, __pyx_L1_error); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_number_20_number_1_5_number_0_5, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_Unthreaded, __pyx_t_1) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_default_benchmarks, __pyx_t_3) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
030:
+031: def run(self, int size=1000, float r_start=-1.5, float r_end=0.5, float c_start=-1, float c_end=1) -> np.ndarray:
/* Python wrapper */ static PyArrayObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_3run(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_2run, "\n Run the mandelbrot benchmark\n :param size: Size of the image to generate (size x size)\n :param r_start: Start of the row axis\n :param r_end: End of the row axis\n :param c_start: Start of the column axis\n :param c_end: End of the column axis\n :return: The mandelbrot set as a numpy array\n "); static PyMethodDef __pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_3run = {"run", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_3run, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_2run}; static PyArrayObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_3run(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_self = 0; int __pyx_v_size; float __pyx_v_r_start; float __pyx_v_r_end; float __pyx_v_c_start; float __pyx_v_c_end; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyArrayObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("run (wrapper)", 0); #if !CYTHON_METH_FASTCALL #if CYTHON_ASSUME_SAFE_MACROS __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 31, __pyx_L3_error) #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_size,&__pyx_n_s_r_start,&__pyx_n_s_r_end,&__pyx_n_s_c_start,&__pyx_n_s_c_end,0}; PyObject* values[6] = {0,0,0,0,0,0}; if (__pyx_kwds) { Py_ssize_t kw_args; switch (__pyx_nargs) { case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds); switch (__pyx_nargs) { case 0: if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) { (void)__Pyx_Arg_NewRef_FASTCALL(values[0]); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 31, __pyx_L3_error) else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_size); if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 31, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r_start); if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 31, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r_end); if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 31, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c_start); if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 31, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 5: if (kw_args > 0) { PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c_end); if (value) { values[5] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; } else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 31, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { const Py_ssize_t kwd_pos_args = __pyx_nargs; if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "run") < 0)) __PYX_ERR(0, 31, __pyx_L3_error) } } else { switch (__pyx_nargs) { case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5); CYTHON_FALLTHROUGH; case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_self = values[0]; if (values[1]) { __pyx_v_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 31, __pyx_L3_error) } else { __pyx_v_size = ((int)((int)0x3E8)); } if (values[2]) { __pyx_v_r_start = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_r_start == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 31, __pyx_L3_error) } else { __pyx_v_r_start = ((float)((double)-1.5)); } if (values[3]) { __pyx_v_r_end = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_r_end == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 31, __pyx_L3_error) } else { __pyx_v_r_end = ((float)((double)0.5)); } if (values[4]) { __pyx_v_c_start = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_c_start == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 31, __pyx_L3_error) } else { __pyx_v_c_start = ((float)((float)-1.0)); } if (values[5]) { __pyx_v_c_end = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_c_end == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 31, __pyx_L3_error) } else { __pyx_v_c_end = ((float)((float)1.0)); } } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("run", 0, 1, 6, __pyx_nargs); __PYX_ERR(0, 31, __pyx_L3_error) goto __pyx_L3_error; __pyx_L3_error:; { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark.run", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_2run(__pyx_self, __pyx_v_self, __pyx_v_size, __pyx_v_r_start, __pyx_v_r_end, __pyx_v_c_start, __pyx_v_c_end); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]); } } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyArrayObject *__pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_2run(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, int __pyx_v_size, float __pyx_v_r_start, float __pyx_v_r_end, float __pyx_v_c_start, float __pyx_v_c_end) { PyArrayObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("run", 0); /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark.run", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_tuple__25 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_size, __pyx_n_s_r_start, __pyx_n_s_r_end, __pyx_n_s_c_start, __pyx_n_s_c_end); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__25); __Pyx_GIVEREF(__pyx_tuple__25); /* … */ __pyx_t_10 = __Pyx_PyInt_From_int(((int)0x3E8)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = PyFloat_FromDouble(((double)-1.5)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = PyFloat_FromDouble(((double)0.5)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = PyFloat_FromDouble(((float)-1.0)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_14 = PyFloat_FromDouble(((float)1.0)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_15 = PyTuple_New(5); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_GIVEREF(__pyx_t_10); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_10)) __PYX_ERR(0, 31, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_11); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_t_11)) __PYX_ERR(0, 31, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_12); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_15, 2, __pyx_t_12)) __PYX_ERR(0, 31, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_13); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_15, 3, __pyx_t_13)) __PYX_ERR(0, 31, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_14); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_15, 4, __pyx_t_14)) __PYX_ERR(0, 31, __pyx_L1_error); __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_14 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 31, __pyx_L1_error) __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_3run, 0, __pyx_n_s_MandelbrotBenchmark_run, NULL, __pyx_n_s_nanopyx_liquid__le_mandelbrot_be, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_13, __pyx_t_15); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_14); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_run_2, __pyx_t_13) < 0) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_mandelbro, __pyx_n_s_run_2, 31, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 31, __pyx_L1_error)
032: """
033: Run the mandelbrot benchmark
034: :param size: Size of the image to generate (size x size)
035: :param r_start: Start of the row axis
036: :param r_end: End of the row axis
037: :param c_start: Start of the column axis
038: :param c_end: End of the column axis
039: :return: The mandelbrot set as a numpy array
040: """
+041: return self._run(size, r_start, r_end, c_start, c_end)
__Pyx_XDECREF((PyObject *)__pyx_r); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_run); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 41, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 41, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_r_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 41, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_r_end); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 41, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyFloat_FromDouble(__pyx_v_c_start); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 41, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyFloat_FromDouble(__pyx_v_c_end); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 41, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = NULL; __pyx_t_9 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_9 = 1; } } #endif { PyObject *__pyx_callargs[6] = {__pyx_t_8, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_9, 5+__pyx_t_9); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 41, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 41, __pyx_L1_error) __pyx_r = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L0;
042:
+043: def benchmark(self, int size, float r_start=-1.5, float r_end=0.5, float c_start=-1, float c_end=1):
/* Python wrapper */
static PyObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_5benchmark(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_5benchmark = {"benchmark", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_5benchmark, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_5benchmark(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
int __pyx_v_size;
float __pyx_v_r_start;
float __pyx_v_r_end;
float __pyx_v_c_start;
float __pyx_v_c_end;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("benchmark (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 43, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_size,&__pyx_n_s_r_start,&__pyx_n_s_r_end,&__pyx_n_s_c_start,&__pyx_n_s_c_end,0};
PyObject* values[6] = {0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 43, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_size)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 43, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("benchmark", 0, 2, 6, 1); __PYX_ERR(0, 43, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r_start);
if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 43, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r_end);
if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 43, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c_start);
if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 43, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c_end);
if (value) { values[5] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 43, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "benchmark") < 0)) __PYX_ERR(0, 43, __pyx_L3_error)
}
} else {
switch (__pyx_nargs) {
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_self = values[0];
__pyx_v_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 43, __pyx_L3_error)
if (values[2]) {
__pyx_v_r_start = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_r_start == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 43, __pyx_L3_error)
} else {
__pyx_v_r_start = ((float)((double)-1.5));
}
if (values[3]) {
__pyx_v_r_end = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_r_end == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 43, __pyx_L3_error)
} else {
__pyx_v_r_end = ((float)((double)0.5));
}
if (values[4]) {
__pyx_v_c_start = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_c_start == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 43, __pyx_L3_error)
} else {
__pyx_v_c_start = ((float)((float)-1.0));
}
if (values[5]) {
__pyx_v_c_end = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_c_end == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 43, __pyx_L3_error)
} else {
__pyx_v_c_end = ((float)((float)1.0));
}
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("benchmark", 0, 2, 6, __pyx_nargs); __PYX_ERR(0, 43, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark.benchmark", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_4benchmark(__pyx_self, __pyx_v_self, __pyx_v_size, __pyx_v_r_start, __pyx_v_r_end, __pyx_v_c_start, __pyx_v_c_end);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_4benchmark(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, int __pyx_v_size, float __pyx_v_r_start, float __pyx_v_r_end, float __pyx_v_c_start, float __pyx_v_c_end) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("benchmark", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark.benchmark", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_13 = PyFloat_FromDouble(((double)-1.5)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 43, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
__pyx_t_14 = PyFloat_FromDouble(((double)0.5)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 43, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_14);
__pyx_t_15 = PyFloat_FromDouble(((float)-1.0)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 43, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
__pyx_t_12 = PyFloat_FromDouble(((float)1.0)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 43, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_11 = PyTuple_New(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 43, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_GIVEREF(__pyx_t_13);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_13)) __PYX_ERR(0, 43, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_14);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_14)) __PYX_ERR(0, 43, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_15);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_15)) __PYX_ERR(0, 43, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_12);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 3, __pyx_t_12)) __PYX_ERR(0, 43, __pyx_L1_error);
__pyx_t_13 = 0;
__pyx_t_14 = 0;
__pyx_t_15 = 0;
__pyx_t_12 = 0;
__pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_5benchmark, 0, __pyx_n_s_MandelbrotBenchmark_benchmark, NULL, __pyx_n_s_nanopyx_liquid__le_mandelbrot_be, __pyx_d, ((PyObject *)__pyx_codeobj__27)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 43, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_INCREF(__pyx_t_12);
PyList_Append(__pyx_t_4, __pyx_t_12);
__Pyx_GIVEREF(__pyx_t_12);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_12, __pyx_t_11);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_benchmark, __pyx_t_12) < 0) __PYX_ERR(0, 43, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
__pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_mandelbro, __pyx_n_s_benchmark, 43, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(0, 43, __pyx_L1_error)
+044: return super().benchmark(size, r_start, r_end, c_start, c_end)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_CyFunction_GetClassObj(__pyx_self); if (!__pyx_t_2) { PyErr_SetString(PyExc_SystemError, "super(): empty __class__ cell"); __PYX_ERR(0, 44, __pyx_L1_error) } __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 44, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2)) __PYX_ERR(0, 44, __pyx_L1_error); __Pyx_INCREF(__pyx_v_self); __Pyx_GIVEREF(__pyx_v_self); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self)) __PYX_ERR(0, 44, __pyx_L1_error); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 44, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_benchmark); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 44, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 44, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_r_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 44, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_r_end); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 44, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyFloat_FromDouble(__pyx_v_c_start); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 44, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyFloat_FromDouble(__pyx_v_c_end); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 44, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = NULL; __pyx_t_9 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_9 = 1; } } #endif { PyObject *__pyx_callargs[6] = {__pyx_t_8, __pyx_t_2, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_9, 5+__pyx_t_9); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
045:
+046: def _run_opencl(self, int size, float r_start, float r_end, float c_start, float c_end, dict device) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_7_run_opencl(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_7_run_opencl = {"_run_opencl", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_7_run_opencl, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_7_run_opencl(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
int __pyx_v_size;
float __pyx_v_r_start;
float __pyx_v_r_end;
float __pyx_v_c_start;
float __pyx_v_c_end;
PyObject *__pyx_v_device = 0;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_opencl (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 46, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_size,&__pyx_n_s_r_start,&__pyx_n_s_r_end,&__pyx_n_s_c_start,&__pyx_n_s_c_end,&__pyx_n_s_device,0};
PyObject* values[7] = {0,0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 46, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_size)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 46, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 7, 7, 1); __PYX_ERR(0, 46, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r_start)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 46, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 7, 7, 2); __PYX_ERR(0, 46, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r_end)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 46, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 7, 7, 3); __PYX_ERR(0, 46, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c_start)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 46, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 7, 7, 4); __PYX_ERR(0, 46, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c_end)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 46, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 7, 7, 5); __PYX_ERR(0, 46, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_device)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[6]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 46, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 7, 7, 6); __PYX_ERR(0, 46, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_opencl") < 0)) __PYX_ERR(0, 46, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 7)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
}
__pyx_v_self = values[0];
__pyx_v_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 46, __pyx_L3_error)
__pyx_v_r_start = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_r_start == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 46, __pyx_L3_error)
__pyx_v_r_end = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_r_end == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 46, __pyx_L3_error)
__pyx_v_c_start = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_c_start == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 46, __pyx_L3_error)
__pyx_v_c_end = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_c_end == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 46, __pyx_L3_error)
__pyx_v_device = ((PyObject*)values[6]);
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_opencl", 1, 7, 7, __pyx_nargs); __PYX_ERR(0, 46, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark._run_opencl", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_device), (&PyDict_Type), 1, "device", 1))) __PYX_ERR(0, 46, __pyx_L1_error)
__pyx_r = __pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_6_run_opencl(__pyx_self, __pyx_v_self, __pyx_v_size, __pyx_v_r_start, __pyx_v_r_end, __pyx_v_c_start, __pyx_v_c_end, __pyx_v_device);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_6_run_opencl(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, int __pyx_v_size, float __pyx_v_r_start, float __pyx_v_r_end, float __pyx_v_c_start, float __pyx_v_c_end, PyObject *__pyx_v_device) {
PyObject *__pyx_v_cl_ctx = NULL;
PyObject *__pyx_v_cl_queue = NULL;
PyObject *__pyx_v_code = NULL;
PyObject *__pyx_v_im_mandelbrot = NULL;
PyObject *__pyx_v_prg = NULL;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_opencl", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark._run_opencl", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_cl_ctx);
__Pyx_XDECREF(__pyx_v_cl_queue);
__Pyx_XDECREF(__pyx_v_code);
__Pyx_XDECREF(__pyx_v_im_mandelbrot);
__Pyx_XDECREF(__pyx_v_prg);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__28 = PyTuple_Pack(12, __pyx_n_s_self, __pyx_n_s_size, __pyx_n_s_r_start, __pyx_n_s_r_end, __pyx_n_s_c_start, __pyx_n_s_c_end, __pyx_n_s_device, __pyx_n_s_cl_ctx, __pyx_n_s_cl_queue, __pyx_n_s_code, __pyx_n_s_im_mandelbrot, __pyx_n_s_prg); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 46, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__28);
__Pyx_GIVEREF(__pyx_tuple__28);
/* … */
__pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 46, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 46, __pyx_L1_error)
__pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_7_run_opencl, 0, __pyx_n_s_MandelbrotBenchmark__run_opencl, NULL, __pyx_n_s_nanopyx_liquid__le_mandelbrot_be, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 46, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_12);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_run_opencl, __pyx_t_11) < 0) __PYX_ERR(0, 46, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(7, 0, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_mandelbro, __pyx_n_s_run_opencl, 46, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(0, 46, __pyx_L1_error)
047:
048: # QUEUE AND CONTEXT
+049: cl_ctx = cl.Context([device['device']])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_cl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Context); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(__pyx_v_device == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 49, __pyx_L1_error) } __pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_device, __pyx_n_u_device); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(0, 49, __pyx_L1_error); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_v_cl_ctx = __pyx_t_1; __pyx_t_1 = 0;
+050: cl_queue = cl.CommandQueue(cl_ctx)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_cl); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 50, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_CommandQueue); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 50, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_cl_ctx}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 50, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __pyx_v_cl_queue = __pyx_t_1; __pyx_t_1 = 0;
051:
+052: code = self._get_cl_code("_le_mandelbrot_benchmark_.cl", device['DP'])
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_get_cl_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(__pyx_v_device == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); __PYX_ERR(0, 52, __pyx_L1_error) } __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_device, __pyx_n_u_DP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_kp_u_le_mandelbrot_benchmark__cl, __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __pyx_v_code = __pyx_t_1; __pyx_t_1 = 0;
053:
054: # Create array for mandelbrot set
+055: im_mandelbrot = cl_array.zeros(cl_queue, (size, size), dtype=np.int32)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_cl_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_cl_queue); __Pyx_GIVEREF(__pyx_v_cl_queue); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_cl_queue)) __PYX_ERR(0, 55, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(0, 55, __pyx_L1_error); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 55, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_im_mandelbrot = __pyx_t_6; __pyx_t_6 = 0;
056:
057: # Create the program
+058: prg = cl.Program(cl_ctx, code).build()
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_cl); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Program); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 58, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_cl_ctx, __pyx_v_code}; __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 58, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_build); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 58, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[1] = {__pyx_t_2, }; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 58, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __pyx_v_prg = __pyx_t_6; __pyx_t_6 = 0;
059:
060: # Run the kernel
+061: prg.mandelbrot(
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_prg, __pyx_n_s_mandelbrot); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 61, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4);
062: cl_queue,
+063: im_mandelbrot.shape,
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_im_mandelbrot, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 63, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2);
064: None,
+065: im_mandelbrot.data,
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_im_mandelbrot, __pyx_n_s_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 65, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3);
+066: np.float32(r_start),
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 66, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float32); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 66, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyFloat_FromDouble(__pyx_v_r_start); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 66, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_7}; __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 66, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; }
+067: np.float32(r_end),
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float32); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyFloat_FromDouble(__pyx_v_r_end); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_10 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_t_7}; __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; }
+068: np.float32(c_start),
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float32); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyFloat_FromDouble(__pyx_v_c_start); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_11 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_7}; __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; }
+069: np.float32(c_end)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float32); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyFloat_FromDouble(__pyx_v_c_end); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_12 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_t_7}; __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } __pyx_t_11 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[9] = {__pyx_t_11, __pyx_v_cl_queue, __pyx_t_2, Py_None, __pyx_t_3, __pyx_t_1, __pyx_t_8, __pyx_t_9, __pyx_t_10}; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 8+__pyx_t_5); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 61, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
070: )
071:
072: # Wait for queue to finish
+073: cl_queue.finish()
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_cl_queue, __pyx_n_s_finish); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_10 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[1] = {__pyx_t_10, }; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
074:
+075: return im_mandelbrot.get()
__Pyx_XDECREF((PyObject *)__pyx_r); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_im_mandelbrot, __pyx_n_s_get); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 75, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_10 = NULL; __pyx_t_5 = 0; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_5 = 1; } } #endif { PyObject *__pyx_callargs[1] = {__pyx_t_10, }; __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 75, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 75, __pyx_L1_error) __pyx_r = ((PyArrayObject *)__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L0;
076:
077: # tag-start: _le_mandelbrot_benchmark.MandelbrotBenchmark._run_unthreaded
+078: def _run_unthreaded(self, int size, float r_start, float r_end, float c_start, float c_end) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_9_run_unthreaded(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_9_run_unthreaded = {"_run_unthreaded", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_9_run_unthreaded, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_9_run_unthreaded(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
CYTHON_UNUSED PyObject *__pyx_v_self = 0;
int __pyx_v_size;
float __pyx_v_r_start;
float __pyx_v_r_end;
float __pyx_v_c_start;
float __pyx_v_c_end;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_unthreaded (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 78, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_size,&__pyx_n_s_r_start,&__pyx_n_s_r_end,&__pyx_n_s_c_start,&__pyx_n_s_c_end,0};
PyObject* values[6] = {0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 78, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_size)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 78, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_unthreaded", 1, 6, 6, 1); __PYX_ERR(0, 78, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r_start)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 78, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_unthreaded", 1, 6, 6, 2); __PYX_ERR(0, 78, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r_end)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 78, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_unthreaded", 1, 6, 6, 3); __PYX_ERR(0, 78, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c_start)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 78, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_unthreaded", 1, 6, 6, 4); __PYX_ERR(0, 78, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c_end)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 78, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_unthreaded", 1, 6, 6, 5); __PYX_ERR(0, 78, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_unthreaded") < 0)) __PYX_ERR(0, 78, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 6)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
}
__pyx_v_self = values[0];
__pyx_v_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 78, __pyx_L3_error)
__pyx_v_r_start = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_r_start == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 78, __pyx_L3_error)
__pyx_v_r_end = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_r_end == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 78, __pyx_L3_error)
__pyx_v_c_start = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_c_start == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 78, __pyx_L3_error)
__pyx_v_c_end = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_c_end == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 78, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_unthreaded", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 78, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark._run_unthreaded", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_8_run_unthreaded(__pyx_self, __pyx_v_self, __pyx_v_size, __pyx_v_r_start, __pyx_v_r_end, __pyx_v_c_start, __pyx_v_c_end);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_8_run_unthreaded(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, int __pyx_v_size, float __pyx_v_r_start, float __pyx_v_r_end, float __pyx_v_c_start, float __pyx_v_c_end) {
PyObject *__pyx_v_im_mandelbrot = NULL;
__Pyx_memviewslice __pyx_v__im_mandelbrot = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_i;
int __pyx_v_j;
float __pyx_v_row;
float __pyx_v_col;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_unthreaded", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XCLEAR_MEMVIEW(&__pyx_t_6, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark._run_unthreaded", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_im_mandelbrot);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__im_mandelbrot, 1);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__30 = PyTuple_Pack(12, __pyx_n_s_self, __pyx_n_s_size, __pyx_n_s_r_start, __pyx_n_s_r_end, __pyx_n_s_c_start, __pyx_n_s_c_end, __pyx_n_s_im_mandelbrot, __pyx_n_s_im_mandelbrot_2, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_row, __pyx_n_s_col); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 78, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__30);
__Pyx_GIVEREF(__pyx_tuple__30);
/* … */
__pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 78, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 78, __pyx_L1_error)
__pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_9_run_unthreaded, 0, __pyx_n_s_MandelbrotBenchmark__run_unthrea, NULL, __pyx_n_s_nanopyx_liquid__le_mandelbrot_be, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 78, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_11);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_run_unthreaded, __pyx_t_12) < 0) __PYX_ERR(0, 78, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_mandelbro, __pyx_n_s_run_unthreaded, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 78, __pyx_L1_error)
+079: im_mandelbrot = np.empty((size, size), dtype=np.int32)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(0, 79, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(0, 79, __pyx_L1_error); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_im_mandelbrot = __pyx_t_5; __pyx_t_5 = 0;
+080: cdef int[:,:] _im_mandelbrot = im_mandelbrot
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(__pyx_v_im_mandelbrot, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 80, __pyx_L1_error) __pyx_v__im_mandelbrot = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
081:
082: # Calculate the mandelbrot set
083: cdef int i, j
084: cdef float row, col
+085: with nogil:
{
#ifdef WITH_THREAD
PyThreadState *_save;
_save = NULL;
Py_UNBLOCK_THREADS
__Pyx_FastGIL_Remember();
#endif
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
#ifdef WITH_THREAD
__Pyx_FastGIL_Forget();
Py_BLOCK_THREADS
#endif
goto __pyx_L5;
}
__pyx_L5:;
}
}
+086: for j in range(size):
__pyx_t_7 = __pyx_v_size;
__pyx_t_8 = __pyx_t_7;
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
__pyx_v_j = __pyx_t_9;
+087: col = c_start + j * (c_end - c_start) / size
__pyx_v_col = (__pyx_v_c_start + ((__pyx_v_j * (__pyx_v_c_end - __pyx_v_c_start)) / ((float)__pyx_v_size)));
+088: for i in range(size):
__pyx_t_10 = __pyx_v_size;
__pyx_t_11 = __pyx_t_10;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
__pyx_v_i = __pyx_t_12;
+089: row = r_start + i * (r_end - r_start) / size
__pyx_v_row = (__pyx_v_r_start + ((__pyx_v_i * (__pyx_v_r_end - __pyx_v_r_start)) / ((float)__pyx_v_size)));
+090: _im_mandelbrot[i, j] = _c_mandelbrot(row, col)
__pyx_t_13 = __pyx_v_i;
__pyx_t_14 = __pyx_v_j;
*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v__im_mandelbrot.data + __pyx_t_13 * __pyx_v__im_mandelbrot.strides[0]) ) + __pyx_t_14 * __pyx_v__im_mandelbrot.strides[1]) )) = _c_mandelbrot(__pyx_v_row, __pyx_v_col);
}
}
}
091:
+092: return im_mandelbrot
__Pyx_XDECREF((PyObject *)__pyx_r); if (!(likely(((__pyx_v_im_mandelbrot) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_im_mandelbrot, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 92, __pyx_L1_error) __Pyx_INCREF(__pyx_v_im_mandelbrot); __pyx_r = ((PyArrayObject *)__pyx_v_im_mandelbrot); goto __pyx_L0;
093: # tag-end
094:
095: # tag-copy: _le_mandelbrot_benchmark.MandelbrotBenchmark._run_unthreaded; replace('_run_unthreaded', '_run_threaded'); replace('j in range(size)', 'j in prange(size)')
+096: def _run_threaded(self, int size, float r_start, float r_end, float c_start, float c_end) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_11_run_threaded(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_11_run_threaded = {"_run_threaded", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_11_run_threaded, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_11_run_threaded(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
CYTHON_UNUSED PyObject *__pyx_v_self = 0;
int __pyx_v_size;
float __pyx_v_r_start;
float __pyx_v_r_end;
float __pyx_v_c_start;
float __pyx_v_c_end;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 96, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_size,&__pyx_n_s_r_start,&__pyx_n_s_r_end,&__pyx_n_s_c_start,&__pyx_n_s_c_end,0};
PyObject* values[6] = {0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 96, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_size)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 96, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded", 1, 6, 6, 1); __PYX_ERR(0, 96, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r_start)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 96, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded", 1, 6, 6, 2); __PYX_ERR(0, 96, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r_end)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 96, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded", 1, 6, 6, 3); __PYX_ERR(0, 96, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c_start)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 96, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded", 1, 6, 6, 4); __PYX_ERR(0, 96, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c_end)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 96, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded", 1, 6, 6, 5); __PYX_ERR(0, 96, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_threaded") < 0)) __PYX_ERR(0, 96, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 6)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
}
__pyx_v_self = values[0];
__pyx_v_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 96, __pyx_L3_error)
__pyx_v_r_start = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_r_start == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 96, __pyx_L3_error)
__pyx_v_r_end = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_r_end == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 96, __pyx_L3_error)
__pyx_v_c_start = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_c_start == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 96, __pyx_L3_error)
__pyx_v_c_end = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_c_end == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 96, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_threaded", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 96, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark._run_threaded", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_10_run_threaded(__pyx_self, __pyx_v_self, __pyx_v_size, __pyx_v_r_start, __pyx_v_r_end, __pyx_v_c_start, __pyx_v_c_end);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_10_run_threaded(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, int __pyx_v_size, float __pyx_v_r_start, float __pyx_v_r_end, float __pyx_v_c_start, float __pyx_v_c_end) {
PyObject *__pyx_v_im_mandelbrot = NULL;
__Pyx_memviewslice __pyx_v__im_mandelbrot = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_i;
int __pyx_v_j;
float __pyx_v_row;
float __pyx_v_col;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XCLEAR_MEMVIEW(&__pyx_t_6, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark._run_threaded", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_im_mandelbrot);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__im_mandelbrot, 1);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 96, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 96, __pyx_L1_error)
__pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_11_run_threaded, 0, __pyx_n_s_MandelbrotBenchmark__run_threade, NULL, __pyx_n_s_nanopyx_liquid__le_mandelbrot_be, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 96, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_12);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_run_threaded, __pyx_t_11) < 0) __PYX_ERR(0, 96, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
/* … */
__pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_mandelbro, __pyx_n_s_run_threaded, 96, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 96, __pyx_L1_error)
+097: im_mandelbrot = np.empty((size, size), dtype=np.int32)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(0, 97, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(0, 97, __pyx_L1_error); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_im_mandelbrot = __pyx_t_5; __pyx_t_5 = 0;
+098: cdef int[:,:] _im_mandelbrot = im_mandelbrot
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(__pyx_v_im_mandelbrot, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 98, __pyx_L1_error) __pyx_v__im_mandelbrot = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
099:
100: # Calculate the mandelbrot set
101: cdef int i, j
102: cdef float row, col
+103: with nogil:
{
#ifdef WITH_THREAD
PyThreadState *_save;
_save = NULL;
Py_UNBLOCK_THREADS
__Pyx_FastGIL_Remember();
#endif
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
#ifdef WITH_THREAD
__Pyx_FastGIL_Forget();
Py_BLOCK_THREADS
#endif
goto __pyx_L5;
}
__pyx_L5:;
}
}
+104: for j in prange(size):
__pyx_t_7 = __pyx_v_size;
{
#if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
#undef likely
#undef unlikely
#define likely(x) (x)
#define unlikely(x) (x)
#endif
__pyx_t_9 = (__pyx_t_7 - 0 + 1 - 1/abs(1)) / 1;
if (__pyx_t_9 > 0)
{
#ifdef _OPENMP
#pragma omp parallel
#endif /* _OPENMP */
{
#ifdef _OPENMP
#pragma omp for lastprivate(__pyx_v_col) lastprivate(__pyx_v_i) firstprivate(__pyx_v_j) lastprivate(__pyx_v_j) lastprivate(__pyx_v_row)
#endif /* _OPENMP */
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_9; __pyx_t_8++){
{
__pyx_v_j = (int)(0 + 1 * __pyx_t_8);
/* Initialize private variables to invalid values */
__pyx_v_col = ((float)__PYX_NAN());
__pyx_v_i = ((int)0xbad0bad0);
__pyx_v_row = ((float)__PYX_NAN());
+105: col = c_start + j * (c_end - c_start) / size
__pyx_v_col = (__pyx_v_c_start + ((__pyx_v_j * (__pyx_v_c_end - __pyx_v_c_start)) / ((float)__pyx_v_size)));
+106: for i in range(size):
__pyx_t_10 = __pyx_v_size;
__pyx_t_11 = __pyx_t_10;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
__pyx_v_i = __pyx_t_12;
+107: row = r_start + i * (r_end - r_start) / size
__pyx_v_row = (__pyx_v_r_start + ((__pyx_v_i * (__pyx_v_r_end - __pyx_v_r_start)) / ((float)__pyx_v_size)));
+108: _im_mandelbrot[i, j] = _c_mandelbrot(row, col)
__pyx_t_13 = __pyx_v_i;
__pyx_t_14 = __pyx_v_j;
*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v__im_mandelbrot.data + __pyx_t_13 * __pyx_v__im_mandelbrot.strides[0]) ) + __pyx_t_14 * __pyx_v__im_mandelbrot.strides[1]) )) = _c_mandelbrot(__pyx_v_row, __pyx_v_col);
}
}
}
}
}
}
#if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
#undef likely
#undef unlikely
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
#endif
}
109:
+110: return im_mandelbrot
__Pyx_XDECREF((PyObject *)__pyx_r); if (!(likely(((__pyx_v_im_mandelbrot) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_im_mandelbrot, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 110, __pyx_L1_error) __Pyx_INCREF(__pyx_v_im_mandelbrot); __pyx_r = ((PyArrayObject *)__pyx_v_im_mandelbrot); goto __pyx_L0;
111: # tag-end
112:
113: # tag-copy: _le_mandelbrot_benchmark.MandelbrotBenchmark._run_unthreaded; replace('_run_unthreaded', '_run_threaded_static'); replace('j in range(size)', 'j in prange(size, schedule="static")')
+114: def _run_threaded_static(self, int size, float r_start, float r_end, float c_start, float c_end) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_13_run_threaded_static(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_13_run_threaded_static = {"_run_threaded_static", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_13_run_threaded_static, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_13_run_threaded_static(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
CYTHON_UNUSED PyObject *__pyx_v_self = 0;
int __pyx_v_size;
float __pyx_v_r_start;
float __pyx_v_r_end;
float __pyx_v_c_start;
float __pyx_v_c_end;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded_static (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 114, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_size,&__pyx_n_s_r_start,&__pyx_n_s_r_end,&__pyx_n_s_c_start,&__pyx_n_s_c_end,0};
PyObject* values[6] = {0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 114, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_size)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 114, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_static", 1, 6, 6, 1); __PYX_ERR(0, 114, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r_start)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 114, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_static", 1, 6, 6, 2); __PYX_ERR(0, 114, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r_end)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 114, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_static", 1, 6, 6, 3); __PYX_ERR(0, 114, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c_start)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 114, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_static", 1, 6, 6, 4); __PYX_ERR(0, 114, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c_end)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 114, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_static", 1, 6, 6, 5); __PYX_ERR(0, 114, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_threaded_static") < 0)) __PYX_ERR(0, 114, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 6)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
}
__pyx_v_self = values[0];
__pyx_v_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 114, __pyx_L3_error)
__pyx_v_r_start = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_r_start == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 114, __pyx_L3_error)
__pyx_v_r_end = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_r_end == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 114, __pyx_L3_error)
__pyx_v_c_start = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_c_start == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 114, __pyx_L3_error)
__pyx_v_c_end = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_c_end == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 114, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_threaded_static", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 114, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark._run_threaded_static", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_12_run_threaded_static(__pyx_self, __pyx_v_self, __pyx_v_size, __pyx_v_r_start, __pyx_v_r_end, __pyx_v_c_start, __pyx_v_c_end);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_12_run_threaded_static(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, int __pyx_v_size, float __pyx_v_r_start, float __pyx_v_r_end, float __pyx_v_c_start, float __pyx_v_c_end) {
PyObject *__pyx_v_im_mandelbrot = NULL;
__Pyx_memviewslice __pyx_v__im_mandelbrot = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_i;
int __pyx_v_j;
float __pyx_v_row;
float __pyx_v_col;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded_static", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XCLEAR_MEMVIEW(&__pyx_t_6, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark._run_threaded_static", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_im_mandelbrot);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__im_mandelbrot, 1);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 114, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 114, __pyx_L1_error)
__pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_13_run_threaded_static, 0, __pyx_n_s_MandelbrotBenchmark__run_threade_2, NULL, __pyx_n_s_nanopyx_liquid__le_mandelbrot_be, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 114, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_11);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_run_threaded_static, __pyx_t_12) < 0) __PYX_ERR(0, 114, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
__pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_mandelbro, __pyx_n_s_run_threaded_static, 114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 114, __pyx_L1_error)
+115: im_mandelbrot = np.empty((size, size), dtype=np.int32)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(0, 115, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(0, 115, __pyx_L1_error); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_im_mandelbrot = __pyx_t_5; __pyx_t_5 = 0;
+116: cdef int[:,:] _im_mandelbrot = im_mandelbrot
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(__pyx_v_im_mandelbrot, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 116, __pyx_L1_error) __pyx_v__im_mandelbrot = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
117:
118: # Calculate the mandelbrot set
119: cdef int i, j
120: cdef float row, col
+121: with nogil:
{
#ifdef WITH_THREAD
PyThreadState *_save;
_save = NULL;
Py_UNBLOCK_THREADS
__Pyx_FastGIL_Remember();
#endif
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
#ifdef WITH_THREAD
__Pyx_FastGIL_Forget();
Py_BLOCK_THREADS
#endif
goto __pyx_L5;
}
__pyx_L5:;
}
}
+122: for j in prange(size, schedule="static"):
__pyx_t_7 = __pyx_v_size;
{
#if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
#undef likely
#undef unlikely
#define likely(x) (x)
#define unlikely(x) (x)
#endif
__pyx_t_9 = (__pyx_t_7 - 0 + 1 - 1/abs(1)) / 1;
if (__pyx_t_9 > 0)
{
#ifdef _OPENMP
#pragma omp parallel
#endif /* _OPENMP */
{
#ifdef _OPENMP
#pragma omp for lastprivate(__pyx_v_col) lastprivate(__pyx_v_i) firstprivate(__pyx_v_j) lastprivate(__pyx_v_j) lastprivate(__pyx_v_row) schedule(static)
#endif /* _OPENMP */
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_9; __pyx_t_8++){
{
__pyx_v_j = (int)(0 + 1 * __pyx_t_8);
/* Initialize private variables to invalid values */
__pyx_v_col = ((float)__PYX_NAN());
__pyx_v_i = ((int)0xbad0bad0);
__pyx_v_row = ((float)__PYX_NAN());
+123: col = c_start + j * (c_end - c_start) / size
__pyx_v_col = (__pyx_v_c_start + ((__pyx_v_j * (__pyx_v_c_end - __pyx_v_c_start)) / ((float)__pyx_v_size)));
+124: for i in range(size):
__pyx_t_10 = __pyx_v_size;
__pyx_t_11 = __pyx_t_10;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
__pyx_v_i = __pyx_t_12;
+125: row = r_start + i * (r_end - r_start) / size
__pyx_v_row = (__pyx_v_r_start + ((__pyx_v_i * (__pyx_v_r_end - __pyx_v_r_start)) / ((float)__pyx_v_size)));
+126: _im_mandelbrot[i, j] = _c_mandelbrot(row, col)
__pyx_t_13 = __pyx_v_i;
__pyx_t_14 = __pyx_v_j;
*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v__im_mandelbrot.data + __pyx_t_13 * __pyx_v__im_mandelbrot.strides[0]) ) + __pyx_t_14 * __pyx_v__im_mandelbrot.strides[1]) )) = _c_mandelbrot(__pyx_v_row, __pyx_v_col);
}
}
}
}
}
}
#if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
#undef likely
#undef unlikely
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
#endif
}
127:
+128: return im_mandelbrot
__Pyx_XDECREF((PyObject *)__pyx_r); if (!(likely(((__pyx_v_im_mandelbrot) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_im_mandelbrot, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 128, __pyx_L1_error) __Pyx_INCREF(__pyx_v_im_mandelbrot); __pyx_r = ((PyArrayObject *)__pyx_v_im_mandelbrot); goto __pyx_L0;
129: # tag-end
130:
131: # tag-copy: _le_mandelbrot_benchmark.MandelbrotBenchmark._run_unthreaded; replace('_run_unthreaded', '_run_threaded_dynamic'); replace('j in range(size)', 'j in prange(size, schedule="dynamic")')
+132: def _run_threaded_dynamic(self, int size, float r_start, float r_end, float c_start, float c_end) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_15_run_threaded_dynamic(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_15_run_threaded_dynamic = {"_run_threaded_dynamic", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_15_run_threaded_dynamic, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_15_run_threaded_dynamic(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
CYTHON_UNUSED PyObject *__pyx_v_self = 0;
int __pyx_v_size;
float __pyx_v_r_start;
float __pyx_v_r_end;
float __pyx_v_c_start;
float __pyx_v_c_end;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded_dynamic (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 132, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_size,&__pyx_n_s_r_start,&__pyx_n_s_r_end,&__pyx_n_s_c_start,&__pyx_n_s_c_end,0};
PyObject* values[6] = {0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 132, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_size)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 132, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_dynamic", 1, 6, 6, 1); __PYX_ERR(0, 132, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r_start)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 132, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_dynamic", 1, 6, 6, 2); __PYX_ERR(0, 132, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r_end)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 132, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_dynamic", 1, 6, 6, 3); __PYX_ERR(0, 132, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c_start)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 132, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_dynamic", 1, 6, 6, 4); __PYX_ERR(0, 132, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c_end)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 132, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_dynamic", 1, 6, 6, 5); __PYX_ERR(0, 132, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_threaded_dynamic") < 0)) __PYX_ERR(0, 132, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 6)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
}
__pyx_v_self = values[0];
__pyx_v_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 132, __pyx_L3_error)
__pyx_v_r_start = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_r_start == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 132, __pyx_L3_error)
__pyx_v_r_end = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_r_end == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 132, __pyx_L3_error)
__pyx_v_c_start = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_c_start == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 132, __pyx_L3_error)
__pyx_v_c_end = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_c_end == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 132, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_threaded_dynamic", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 132, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark._run_threaded_dynamic", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_14_run_threaded_dynamic(__pyx_self, __pyx_v_self, __pyx_v_size, __pyx_v_r_start, __pyx_v_r_end, __pyx_v_c_start, __pyx_v_c_end);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_14_run_threaded_dynamic(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, int __pyx_v_size, float __pyx_v_r_start, float __pyx_v_r_end, float __pyx_v_c_start, float __pyx_v_c_end) {
PyObject *__pyx_v_im_mandelbrot = NULL;
__Pyx_memviewslice __pyx_v__im_mandelbrot = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_i;
int __pyx_v_j;
float __pyx_v_row;
float __pyx_v_col;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded_dynamic", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XCLEAR_MEMVIEW(&__pyx_t_6, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark._run_threaded_dynamic", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_im_mandelbrot);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__im_mandelbrot, 1);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 132, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 132, __pyx_L1_error)
__pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_15_run_threaded_dynamic, 0, __pyx_n_s_MandelbrotBenchmark__run_threade_3, NULL, __pyx_n_s_nanopyx_liquid__le_mandelbrot_be, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 132, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_12);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_run_threaded_dynamic, __pyx_t_11) < 0) __PYX_ERR(0, 132, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
/* … */
__pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_mandelbro, __pyx_n_s_run_threaded_dynamic, 132, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 132, __pyx_L1_error)
+133: im_mandelbrot = np.empty((size, size), dtype=np.int32)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(0, 133, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(0, 133, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(0, 133, __pyx_L1_error); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 133, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_im_mandelbrot = __pyx_t_5; __pyx_t_5 = 0;
+134: cdef int[:,:] _im_mandelbrot = im_mandelbrot
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(__pyx_v_im_mandelbrot, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 134, __pyx_L1_error) __pyx_v__im_mandelbrot = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
135:
136: # Calculate the mandelbrot set
137: cdef int i, j
138: cdef float row, col
+139: with nogil:
{
#ifdef WITH_THREAD
PyThreadState *_save;
_save = NULL;
Py_UNBLOCK_THREADS
__Pyx_FastGIL_Remember();
#endif
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
#ifdef WITH_THREAD
__Pyx_FastGIL_Forget();
Py_BLOCK_THREADS
#endif
goto __pyx_L5;
}
__pyx_L5:;
}
}
+140: for j in prange(size, schedule="dynamic"):
__pyx_t_7 = __pyx_v_size;
{
#if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
#undef likely
#undef unlikely
#define likely(x) (x)
#define unlikely(x) (x)
#endif
__pyx_t_9 = (__pyx_t_7 - 0 + 1 - 1/abs(1)) / 1;
if (__pyx_t_9 > 0)
{
#ifdef _OPENMP
#pragma omp parallel
#endif /* _OPENMP */
{
#ifdef _OPENMP
#pragma omp for lastprivate(__pyx_v_col) lastprivate(__pyx_v_i) firstprivate(__pyx_v_j) lastprivate(__pyx_v_j) lastprivate(__pyx_v_row) schedule(dynamic)
#endif /* _OPENMP */
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_9; __pyx_t_8++){
{
__pyx_v_j = (int)(0 + 1 * __pyx_t_8);
/* Initialize private variables to invalid values */
__pyx_v_col = ((float)__PYX_NAN());
__pyx_v_i = ((int)0xbad0bad0);
__pyx_v_row = ((float)__PYX_NAN());
+141: col = c_start + j * (c_end - c_start) / size
__pyx_v_col = (__pyx_v_c_start + ((__pyx_v_j * (__pyx_v_c_end - __pyx_v_c_start)) / ((float)__pyx_v_size)));
+142: for i in range(size):
__pyx_t_10 = __pyx_v_size;
__pyx_t_11 = __pyx_t_10;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
__pyx_v_i = __pyx_t_12;
+143: row = r_start + i * (r_end - r_start) / size
__pyx_v_row = (__pyx_v_r_start + ((__pyx_v_i * (__pyx_v_r_end - __pyx_v_r_start)) / ((float)__pyx_v_size)));
+144: _im_mandelbrot[i, j] = _c_mandelbrot(row, col)
__pyx_t_13 = __pyx_v_i;
__pyx_t_14 = __pyx_v_j;
*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v__im_mandelbrot.data + __pyx_t_13 * __pyx_v__im_mandelbrot.strides[0]) ) + __pyx_t_14 * __pyx_v__im_mandelbrot.strides[1]) )) = _c_mandelbrot(__pyx_v_row, __pyx_v_col);
}
}
}
}
}
}
#if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
#undef likely
#undef unlikely
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
#endif
}
145:
+146: return im_mandelbrot
__Pyx_XDECREF((PyObject *)__pyx_r); if (!(likely(((__pyx_v_im_mandelbrot) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_im_mandelbrot, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 146, __pyx_L1_error) __Pyx_INCREF(__pyx_v_im_mandelbrot); __pyx_r = ((PyArrayObject *)__pyx_v_im_mandelbrot); goto __pyx_L0;
147: # tag-end
148:
149: # tag-copy: _le_mandelbrot_benchmark.MandelbrotBenchmark._run_unthreaded; replace('_run_unthreaded', '_run_threaded_guided'); replace('j in range(size)', 'j in prange(size, schedule="guided")')
+150: def _run_threaded_guided(self, int size, float r_start, float r_end, float c_start, float c_end) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_17_run_threaded_guided(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_17_run_threaded_guided = {"_run_threaded_guided", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_17_run_threaded_guided, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_17_run_threaded_guided(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
CYTHON_UNUSED PyObject *__pyx_v_self = 0;
int __pyx_v_size;
float __pyx_v_r_start;
float __pyx_v_r_end;
float __pyx_v_c_start;
float __pyx_v_c_end;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded_guided (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 150, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_size,&__pyx_n_s_r_start,&__pyx_n_s_r_end,&__pyx_n_s_c_start,&__pyx_n_s_c_end,0};
PyObject* values[6] = {0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 150, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_size)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 150, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_guided", 1, 6, 6, 1); __PYX_ERR(0, 150, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r_start)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 150, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_guided", 1, 6, 6, 2); __PYX_ERR(0, 150, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r_end)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 150, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_guided", 1, 6, 6, 3); __PYX_ERR(0, 150, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c_start)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 150, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_guided", 1, 6, 6, 4); __PYX_ERR(0, 150, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c_end)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 150, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_threaded_guided", 1, 6, 6, 5); __PYX_ERR(0, 150, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_threaded_guided") < 0)) __PYX_ERR(0, 150, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 6)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
}
__pyx_v_self = values[0];
__pyx_v_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 150, __pyx_L3_error)
__pyx_v_r_start = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_r_start == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 150, __pyx_L3_error)
__pyx_v_r_end = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_r_end == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 150, __pyx_L3_error)
__pyx_v_c_start = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_c_start == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 150, __pyx_L3_error)
__pyx_v_c_end = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_c_end == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 150, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_threaded_guided", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 150, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark._run_threaded_guided", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_16_run_threaded_guided(__pyx_self, __pyx_v_self, __pyx_v_size, __pyx_v_r_start, __pyx_v_r_end, __pyx_v_c_start, __pyx_v_c_end);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_16_run_threaded_guided(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, int __pyx_v_size, float __pyx_v_r_start, float __pyx_v_r_end, float __pyx_v_c_start, float __pyx_v_c_end) {
PyObject *__pyx_v_im_mandelbrot = NULL;
__Pyx_memviewslice __pyx_v__im_mandelbrot = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_i;
int __pyx_v_j;
float __pyx_v_row;
float __pyx_v_col;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_threaded_guided", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XCLEAR_MEMVIEW(&__pyx_t_6, 1);
__Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark._run_threaded_guided", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_im_mandelbrot);
__PYX_XCLEAR_MEMVIEW(&__pyx_v__im_mandelbrot, 1);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 150, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 150, __pyx_L1_error)
__pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_17_run_threaded_guided, 0, __pyx_n_s_MandelbrotBenchmark__run_threade_4, NULL, __pyx_n_s_nanopyx_liquid__le_mandelbrot_be, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 150, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_12, __pyx_t_11);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_run_threaded_guided, __pyx_t_12) < 0) __PYX_ERR(0, 150, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
__pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_mandelbro, __pyx_n_s_run_threaded_guided, 150, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 150, __pyx_L1_error)
+151: im_mandelbrot = np.empty((size, size), dtype=np.int32)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(0, 151, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_im_mandelbrot = __pyx_t_5; __pyx_t_5 = 0;
+152: cdef int[:,:] _im_mandelbrot = im_mandelbrot
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(__pyx_v_im_mandelbrot, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 152, __pyx_L1_error) __pyx_v__im_mandelbrot = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
153:
154: # Calculate the mandelbrot set
155: cdef int i, j
156: cdef float row, col
+157: with nogil:
{
#ifdef WITH_THREAD
PyThreadState *_save;
_save = NULL;
Py_UNBLOCK_THREADS
__Pyx_FastGIL_Remember();
#endif
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
#ifdef WITH_THREAD
__Pyx_FastGIL_Forget();
Py_BLOCK_THREADS
#endif
goto __pyx_L5;
}
__pyx_L5:;
}
}
+158: for j in prange(size, schedule="guided"):
__pyx_t_7 = __pyx_v_size;
{
#if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
#undef likely
#undef unlikely
#define likely(x) (x)
#define unlikely(x) (x)
#endif
__pyx_t_9 = (__pyx_t_7 - 0 + 1 - 1/abs(1)) / 1;
if (__pyx_t_9 > 0)
{
#ifdef _OPENMP
#pragma omp parallel
#endif /* _OPENMP */
{
#ifdef _OPENMP
#pragma omp for lastprivate(__pyx_v_col) lastprivate(__pyx_v_i) firstprivate(__pyx_v_j) lastprivate(__pyx_v_j) lastprivate(__pyx_v_row) schedule(guided)
#endif /* _OPENMP */
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_9; __pyx_t_8++){
{
__pyx_v_j = (int)(0 + 1 * __pyx_t_8);
/* Initialize private variables to invalid values */
__pyx_v_col = ((float)__PYX_NAN());
__pyx_v_i = ((int)0xbad0bad0);
__pyx_v_row = ((float)__PYX_NAN());
+159: col = c_start + j * (c_end - c_start) / size
__pyx_v_col = (__pyx_v_c_start + ((__pyx_v_j * (__pyx_v_c_end - __pyx_v_c_start)) / ((float)__pyx_v_size)));
+160: for i in range(size):
__pyx_t_10 = __pyx_v_size;
__pyx_t_11 = __pyx_t_10;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
__pyx_v_i = __pyx_t_12;
+161: row = r_start + i * (r_end - r_start) / size
__pyx_v_row = (__pyx_v_r_start + ((__pyx_v_i * (__pyx_v_r_end - __pyx_v_r_start)) / ((float)__pyx_v_size)));
+162: _im_mandelbrot[i, j] = _c_mandelbrot(row, col)
__pyx_t_13 = __pyx_v_i;
__pyx_t_14 = __pyx_v_j;
*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v__im_mandelbrot.data + __pyx_t_13 * __pyx_v__im_mandelbrot.strides[0]) ) + __pyx_t_14 * __pyx_v__im_mandelbrot.strides[1]) )) = _c_mandelbrot(__pyx_v_row, __pyx_v_col);
}
}
}
}
}
}
#if ((defined(__APPLE__) || defined(__OSX__)) && (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))))
#undef likely
#undef unlikely
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
#endif
}
163:
+164: return im_mandelbrot
__Pyx_XDECREF((PyObject *)__pyx_r); if (!(likely(((__pyx_v_im_mandelbrot) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_im_mandelbrot, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 164, __pyx_L1_error) __Pyx_INCREF(__pyx_v_im_mandelbrot); __pyx_r = ((PyArrayObject *)__pyx_v_im_mandelbrot); goto __pyx_L0;
165: # tag-end
166:
+167: def _run_python(self, int size, float r_start, float r_end, float c_start, float c_end) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_19_run_python(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_19_run_python = {"_run_python", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_19_run_python, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_19_run_python(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
CYTHON_UNUSED PyObject *__pyx_v_self = 0;
int __pyx_v_size;
float __pyx_v_r_start;
float __pyx_v_r_end;
float __pyx_v_c_start;
float __pyx_v_c_end;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_python (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 167, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_size,&__pyx_n_s_r_start,&__pyx_n_s_r_end,&__pyx_n_s_c_start,&__pyx_n_s_c_end,0};
PyObject* values[6] = {0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 167, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_size)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 167, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_python", 1, 6, 6, 1); __PYX_ERR(0, 167, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r_start)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 167, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_python", 1, 6, 6, 2); __PYX_ERR(0, 167, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r_end)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 167, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_python", 1, 6, 6, 3); __PYX_ERR(0, 167, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c_start)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 167, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_python", 1, 6, 6, 4); __PYX_ERR(0, 167, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c_end)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 167, __pyx_L3_error)
else {
__Pyx_RaiseArgtupleInvalid("_run_python", 1, 6, 6, 5); __PYX_ERR(0, 167, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_python") < 0)) __PYX_ERR(0, 167, __pyx_L3_error)
}
} else if (unlikely(__pyx_nargs != 6)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
}
__pyx_v_self = values[0];
__pyx_v_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 167, __pyx_L3_error)
__pyx_v_r_start = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_r_start == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 167, __pyx_L3_error)
__pyx_v_r_end = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_r_end == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 167, __pyx_L3_error)
__pyx_v_c_start = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_c_start == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 167, __pyx_L3_error)
__pyx_v_c_end = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_c_end == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 167, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_python", 1, 6, 6, __pyx_nargs); __PYX_ERR(0, 167, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark._run_python", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_18_run_python(__pyx_self, __pyx_v_self, __pyx_v_size, __pyx_v_r_start, __pyx_v_r_end, __pyx_v_c_start, __pyx_v_c_end);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_18_run_python(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, int __pyx_v_size, float __pyx_v_r_start, float __pyx_v_r_end, float __pyx_v_c_start, float __pyx_v_c_end) {
PyObject *__pyx_v_im_mandelbrot = NULL;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_python", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark._run_python", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_im_mandelbrot);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__36 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_size, __pyx_n_s_r_start, __pyx_n_s_r_end, __pyx_n_s_c_start, __pyx_n_s_c_end, __pyx_n_s_im_mandelbrot); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 167, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__36);
__Pyx_GIVEREF(__pyx_tuple__36);
/* … */
__pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 167, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 167, __pyx_L1_error)
__pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_19_run_python, 0, __pyx_n_s_MandelbrotBenchmark__run_python, NULL, __pyx_n_s_nanopyx_liquid__le_mandelbrot_be, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 167, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_11, __pyx_t_12);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_run_python, __pyx_t_11) < 0) __PYX_ERR(0, 167, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_nanopyx_liquid__le_mandelbro, __pyx_n_s_run_python, 167, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 167, __pyx_L1_error)
+168: im_mandelbrot = np.empty((size, size), dtype=np.int32)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(0, 168, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(0, 168, __pyx_L1_error); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_im_mandelbrot = __pyx_t_5; __pyx_t_5 = 0;
+169: _py_mandelbrot(im_mandelbrot, r_start, r_end, c_start, c_end)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_py_mandelbrot); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 169, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyFloat_FromDouble(__pyx_v_r_start); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 169, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_r_end); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 169, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyFloat_FromDouble(__pyx_v_c_start); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 169, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = PyFloat_FromDouble(__pyx_v_c_end); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 169, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[6] = {__pyx_t_7, __pyx_v_im_mandelbrot, __pyx_t_3, __pyx_t_2, __pyx_t_1, __pyx_t_6}; __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_8, 5+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 169, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+170: return im_mandelbrot
__Pyx_XDECREF((PyObject *)__pyx_r); if (!(likely(((__pyx_v_im_mandelbrot) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_im_mandelbrot, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 170, __pyx_L1_error) __Pyx_INCREF(__pyx_v_im_mandelbrot); __pyx_r = ((PyArrayObject *)__pyx_v_im_mandelbrot); goto __pyx_L0;
171:
+172: def _run_njit(self, int size=10, float r_start=-1.5, float r_end=0.5, float c_start=-1, float c_end=1) -> np.ndarray:
/* Python wrapper */
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_21_run_njit(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_21_run_njit = {"_run_njit", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_21_run_njit, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyArrayObject *__pyx_pw_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_21_run_njit(PyObject *__pyx_self,
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
CYTHON_UNUSED PyObject *__pyx_v_self = 0;
int __pyx_v_size;
float __pyx_v_r_start;
float __pyx_v_r_end;
float __pyx_v_c_start;
float __pyx_v_c_end;
#if !CYTHON_METH_FASTCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyArrayObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_njit (wrapper)", 0);
#if !CYTHON_METH_FASTCALL
#if CYTHON_ASSUME_SAFE_MACROS
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args);
if (unlikely((__pyx_nargs < 0))) __PYX_ERR(0, 172, __pyx_L3_error)
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_size,&__pyx_n_s_r_start,&__pyx_n_s_r_end,&__pyx_n_s_c_start,&__pyx_n_s_c_end,0};
PyObject* values[6] = {0,0,0,0,0,0};
if (__pyx_kwds) {
Py_ssize_t kw_args;
switch (__pyx_nargs) {
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
switch (__pyx_nargs) {
case 0:
if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) {
(void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
kw_args--;
}
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 172, __pyx_L3_error)
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_size);
if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 172, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r_start);
if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 172, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r_end);
if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 172, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c_start);
if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 172, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_c_end);
if (value) { values[5] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 172, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_run_njit") < 0)) __PYX_ERR(0, 172, __pyx_L3_error)
}
} else {
switch (__pyx_nargs) {
case 6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_self = values[0];
if (values[1]) {
__pyx_v_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 172, __pyx_L3_error)
} else {
__pyx_v_size = ((int)((int)10));
}
if (values[2]) {
__pyx_v_r_start = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_r_start == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 172, __pyx_L3_error)
} else {
__pyx_v_r_start = ((float)((double)-1.5));
}
if (values[3]) {
__pyx_v_r_end = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_r_end == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 172, __pyx_L3_error)
} else {
__pyx_v_r_end = ((float)((double)0.5));
}
if (values[4]) {
__pyx_v_c_start = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_c_start == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 172, __pyx_L3_error)
} else {
__pyx_v_c_start = ((float)((float)-1.0));
}
if (values[5]) {
__pyx_v_c_end = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_c_end == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 172, __pyx_L3_error)
} else {
__pyx_v_c_end = ((float)((float)1.0));
}
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_run_njit", 0, 1, 6, __pyx_nargs); __PYX_ERR(0, 172, __pyx_L3_error)
goto __pyx_L3_error;
__pyx_L3_error:;
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark._run_njit", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_20_run_njit(__pyx_self, __pyx_v_self, __pyx_v_size, __pyx_v_r_start, __pyx_v_r_end, __pyx_v_c_start, __pyx_v_c_end);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
{
Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
__Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
}
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyArrayObject *__pyx_pf_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_20_run_njit(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self, int __pyx_v_size, float __pyx_v_r_start, float __pyx_v_r_end, float __pyx_v_c_start, float __pyx_v_c_end) {
PyObject *__pyx_v_im_mandelbrot = NULL;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_run_njit", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("nanopyx.liquid._le_mandelbrot_benchmark.MandelbrotBenchmark._run_njit", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_im_mandelbrot);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_11 = __Pyx_PyInt_From_int(((int)10)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 172, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = PyFloat_FromDouble(((double)-1.5)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 172, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_15 = PyFloat_FromDouble(((double)0.5)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 172, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
__pyx_t_14 = PyFloat_FromDouble(((float)-1.0)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 172, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_14);
__pyx_t_13 = PyFloat_FromDouble(((float)1.0)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 172, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
__pyx_t_10 = PyTuple_New(5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 172, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_GIVEREF(__pyx_t_11);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11)) __PYX_ERR(0, 172, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_12);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_12)) __PYX_ERR(0, 172, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_15);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_15)) __PYX_ERR(0, 172, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_14);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 3, __pyx_t_14)) __PYX_ERR(0, 172, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_13);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 4, __pyx_t_13)) __PYX_ERR(0, 172, __pyx_L1_error);
__pyx_t_11 = 0;
__pyx_t_12 = 0;
__pyx_t_15 = 0;
__pyx_t_14 = 0;
__pyx_t_13 = 0;
__pyx_t_13 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 172, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_return, __pyx_kp_s_np_ndarray) < 0) __PYX_ERR(0, 172, __pyx_L1_error)
__pyx_t_14 = __Pyx_CyFunction_New(&__pyx_mdef_7nanopyx_6liquid_24_le_mandelbrot_benchmark_19MandelbrotBenchmark_21_run_njit, 0, __pyx_n_s_MandelbrotBenchmark__run_njit, NULL, __pyx_n_s_nanopyx_liquid__le_mandelbrot_be, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 172, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_14);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_14, __pyx_t_10);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_14, __pyx_t_13);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
if (__Pyx_SetNameInClass(__pyx_t_9, __pyx_n_s_run_njit, __pyx_t_14) < 0) __PYX_ERR(0, 172, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+173: im_mandelbrot = np.empty((size, size), dtype=np.int32)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 173, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 173, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 173, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 173, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 173, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1)) __PYX_ERR(0, 173, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(0, 173, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 173, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4)) __PYX_ERR(0, 173, __pyx_L1_error); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 173, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 173, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 173, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 173, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 173, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_im_mandelbrot = __pyx_t_5; __pyx_t_5 = 0;
+174: _njit_mandelbrot(im_mandelbrot, r_start, r_end, c_start, c_end)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_njit_mandelbrot); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyFloat_FromDouble(__pyx_v_r_start); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_r_end); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyFloat_FromDouble(__pyx_v_c_start); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = PyFloat_FromDouble(__pyx_v_c_end); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_8 = 1; } } #endif { PyObject *__pyx_callargs[6] = {__pyx_t_7, __pyx_v_im_mandelbrot, __pyx_t_3, __pyx_t_2, __pyx_t_1, __pyx_t_6}; __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_8, 5+__pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+175: return im_mandelbrot
__Pyx_XDECREF((PyObject *)__pyx_r); if (!(likely(((__pyx_v_im_mandelbrot) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_im_mandelbrot, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 175, __pyx_L1_error) __Pyx_INCREF(__pyx_v_im_mandelbrot); __pyx_r = ((PyArrayObject *)__pyx_v_im_mandelbrot); goto __pyx_L0;